/* = Gulp组件
 -------------------------------------------------------------- */
var version = '3.1.8';
// 引入gulp
var gulp			= require('gulp');					// 基础库

// 引入我们的gulp组件
var sass 			= require('gulp-ruby-sass'),			// CSS预处理/Sass编译
    uglify 			= require('gulp-uglify'),				// JS文件压缩
    imagemin 		= require('gulp-imagemin'),		        // imagemin 图片压缩
    pngquant 		= require('imagemin-pngquant'),	        // imagemin 深度压缩
    sourcemaps 	    = require('gulp-sourcemaps'),		    // 来源地图
    changed 		= require('gulp-changed'),			    // 只操作有过修改的文件
    cleanDest		= require('gulp-clean-dest'),			// 文件清理
    babel 			= require('gulp-babel'),				// es6转es5
    cleanCSS 		= require('gulp-clean-css'),			// css处理
    autoprefixer    = require('gulp-autoprefixer'),         // css添加前缀
    concatreplace   = require('gulp-concat-replace');       //文件合并
   // rev             = require('gulp-rev'),
  //  revManifest     = require('gulp-revmanifest');

/* = 全局设置
 -------------------------------------------------------------- */
var srcPath = {
    html	    : 'app/view',
    css		    : 'app/public/css',
    script	    : 'app/public/js/common',
    scriptPage	: 'app/public/js/page',
    image	    : 'app/public/images',
    icon        : 'app/public/starability-images',
    font        : 'app/public/font',
};
var destPath = {
    html	    : '../dist/view',
    css		    : '../dist/public/css',
    script	    : '../dist/public/js/common',
    scriptPage	: '../dist/public/js/page',
    image	    : '../dist/public/images',
    icon	    : '../dist/public/starability-images',
    font        : '../dist/public/font',
};

/* = 开发环境( Ddevelop Task )
 -------------------------------------------------------------- */
// HTML处理
gulp.task('html', function() {
    return gulp.src( srcPath.html+'/**')
        .pipe(changed( destPath.html ))
        .pipe(gulp.dest( destPath.html ));
});

/*css压缩*/
gulp.task("css", function () {
    return gulp.src( srcPath.css + "/**")
        .pipe(cleanCSS({
            rebase:false
        }))
        .pipe(autoprefixer({
            browsers: ['last 2 versions'],
            cascade: false
        }))
        .pipe(sourcemaps.write('maps')) // 地图输出路径（存放位置）
        .pipe(gulp.dest( destPath.css ))
});

// JS文件公用压缩
gulp.task('script', function() {
    return gulp.src( [srcPath.script+'/*.js','!'+srcPath.script+'/*.min.js'] ) // 指明源文件路径、并进行文件匹配，排除 .min.js 后缀的文件
        .pipe(changed( destPath.script ))
        .pipe(uglify()) // 使用uglify进行压缩
        .pipe(sourcemaps.write('maps')) // 地图输出路径（存放位置）
        .pipe(gulp.dest( destPath.script )); // 输出路径
});
// JS文件公用压缩
gulp.task('scriptmin', function() {
    return gulp.src( [srcPath.script+'/*.min.js'] ) // 指明源文件路径、并进行文件匹配，排除 .min.js 后缀的文件
        .pipe(changed( destPath.script ))
        .pipe(sourcemaps.write('maps')) // 地图输出路径（存放位置）
        .pipe(gulp.dest( destPath.script )); // 输出路径
});
// JS页面文件
gulp.task('scriptPage', function() {
    return gulp.src( srcPath.scriptPage+'/**' ) // 指明源文件路径、并进行文件匹配，排除 .min.js 后缀的文件
        .pipe(changed( destPath.scriptPage ))
        .pipe(uglify()) // 使用uglify进行压缩
        .pipe(sourcemaps.write('maps')) // 地图输出路径（存放位置）
        .pipe(gulp.dest( destPath.scriptPage)); // 输出路径
});

// imagemin 图片压缩
gulp.task('images', function(){
    return gulp.src( srcPath.image+'/**' ) // 指明源文件路径，如需匹配指定格式的文件，可以写成 .{png,jpg,gif,svg}
        .pipe(changed( destPath.image ))
        .pipe(imagemin({
            progressive: true, // 无损压缩JPG图片
            svgoPlugins: [{removeViewBox: false}], // 不要移除svg的viewbox属性
            use: [pngquant()] // 深度压缩PNG
        }))
        .pipe(gulp.dest( destPath.image )); // 输出路径
});
// icon 小图标压缩
gulp.task('icon', function(){
    return gulp.src( srcPath.icon+'/**' ) // 指明源文件路径，如需匹配指定格式的文件，可以写成 .{png,jpg,gif,svg}
        .pipe(changed( destPath.icon ))
        .pipe(imagemin({
            progressive: true, // 无损压缩JPG图片
            svgoPlugins: [{removeViewBox: false}], // 不要移除svg的viewbox属性
            use: [pngquant()] // 深度压缩PNG
        }))
        .pipe(gulp.dest( destPath.icon )); // 输出路径
});

/*其他*/
gulp.task("other", function () {
    return gulp.src(srcPath.font+'*')
        .pipe(gulp.dest( destPath.font ));
});

/*初始化执行gulp*/
gulp.task('default', ['html','css','script','scriptmin','scriptPage','images','icon','other'],function () {
    gulp.src('../dist/view/**')
        .pipe(concatreplace({
            prefix:"concat",
            base:"./",
            output:{
                css:"../public/"+version+"/css",
                js:"../public/"+version+"/js"
            }
        }))
        .pipe(gulp.dest('../view'));//html替换后的目录
});

/* = 发布环境( Release Task )
 -------------------------------------------------------------- */


